Lang.bind(this,
function() {
// update the selection
- this._selectIndex(this._getIndexOfDisplayedActor(displayItem.actor));
+ this._selectIndex(this._list.get_actor_index(displayItem.actor));
this.activateSelected();
}));
displayItem.connect('show-details',
Lang.bind(this,
function() {
- let index = this._getIndexOfDisplayedActor(displayItem.actor);
+ let index = this._list.get_actor_index(displayItem.actor);
/* Close the details pane if already open */
if (index == this._openDetailIndex) {
this._openDetailIndex = -1;
_removeDisplayItem: function(itemId) {
let count = this._list.displayedCount;
let displayItem = this._displayedItems[itemId];
- let displayItemIndex = this._getIndexOfDisplayedActor(displayItem.actor);
+ let displayItemIndex = this._list.get_actor_index(displayItem.actor);
if (this.hasSelected() && count == 1) {
this.unsetSelected();
return null;
},
- // Returns and index that the actor has in the ordering of the display's
- // children.
- _getIndexOfDisplayedActor: function(actor) {
- let children = this._list.get_children();
- for (let i = 0; i < children.length; i++) {
- if (children[i] == actor)
- return i;
- }
- return -1;
- },
-
// Selects (e.g. highlights) a display item at the provided index,
// updates this.selectedItemDetails actor, and emits 'selected' signal.
_selectIndex: function(index) {
return iter->data;
}
+
+/**
+ * shell_overflow_list_get_actor_index:
+ * @self:
+ * @actor: a child of the list
+ *
+ * Returns the index on the current page of the given actor.
+ *
+ * Return value: index of @actor in
+ * the currently visible page
+ */
+int
+shell_overflow_list_get_actor_index (ShellOverflowList *self,
+ ClutterActor *actor)
+{
+ GList *children, *iter;
+ int i;
+
+ children = clutter_container_get_children (CLUTTER_CONTAINER (self));
+
+ if (children == NULL)
+ return NULL;
+
+ iter = g_list_nth (children, (self->priv->page) * self->priv->items_per_page);
+
+ int result = -1;
+ for (i = 0; iter; iter = iter->next, i++)
+ if (iter->data == actor)
+ {
+ result = i;
+ break;
+ }
+
+ g_list_free (children);
+
+ return result;
+}
GType shell_overflow_list_get_type (void) G_GNUC_CONST;
ClutterActor *shell_overflow_list_get_displayed_actor (ShellOverflowList *list, guint index);
+int shell_overflow_list_get_actor_index (ShellOverflowList *list, ClutterActor *actor);
G_END_DECLS